﻿using System;
using System.Collections.Generic;
using System.Web;
using System.Data.Odbc;
using WLMCoreLibrary;
using System.Data;
using System.Text;
using System.Configuration;
using System.Security;
using System.Xml;
using System.Xml.Serialization;
using System.Xml.Schema;
using MiWebSite_Core;

namespace MWS_AddDirectory
{
    public class Cupon : BaseClass
    {
        #region private fields
        private String _nombre;
        private int _idAnuncio;
        private int _idCliente;
        private DateTime _fechaVencimiento;
        private int _NoImpresiones;
        private int _idImagen;
        private String _descripcion;
        private String _texto;
        private DateTime _fechaActivacion;
        private MiWebSiteMediaImages _Imagen;
        #endregion

        #region public properties
        public String nombre {get;set; }
        public int idAnuncio {get;set; }
        public int idCliente {get;set; }
        public DateTime fechaVencimiento {get;set; }
        public int NoImpresiones {get;set; }
        public int idImagen {get;set; }
        public String descripcion {get;set; }
        public String texto {get;set; }
        public DateTime fechaActivacion {get;set; }
        public MiWebSiteMediaImages Imagen
        {
           get;set;
        }
        #endregion

        #region constructors
        public Cupon()
        {
        }

        public Cupon(ref dbConnector ConexionDB)
        {
            ConexionDBInterna = ConexionDB;
            WLMClassBinder classBinder = new WLMClassBinder(ref ConexionDBInterna);
            id = classBinder.NewRecord("CUPON");
            string queryString = "";
            queryString = "SELECT * FROM CUPON WHERE id='" + id + "'";
            GetRecord(queryString);
        }

        public Cupon(int registryId, ref dbConnector ConexionDB)
        {
            ConexionDBInterna = ConexionDB;
            string queryString = "";
            queryString = "SELECT * FROM CUPON WHERE id='" + registryId + "'";
            WLMClassBinder classBinder = new WLMClassBinder(ref ConexionDBInterna);
            this.GetRecord(queryString);
            Imagen = new MiWebSiteMediaImages(idImagen, ref ConexionDBInterna);
        }
        public Cupon(DataRow dataRow, ref dbConnector ConexionDB)
        {
            ConexionDBInterna = ConexionDB;
            this.GetRecord(dataRow);
            Imagen = new MiWebSiteMediaImages(idImagen, ref ConexionDBInterna);
        }
        #endregion

        #region public methods


        public void Delete()
        {
            string queryString = "";
            queryString = "DELETE FROM CUPON WHERE id='" + id + "'";
            ConexionDBInterna.ExecuteCommand(queryString);

        }
        #endregion

        #region Private Methods
        private void GetRecord(string queryString)
        {
            OdbcDataReader reader = ConexionDBInterna.ExecuteReader(queryString);
            if (reader.HasRows)
            {
                if (!reader.IsDBNull(reader.GetOrdinal("id")))
                    id = (System.Int32)reader["id"];
                if (!reader.IsDBNull(reader.GetOrdinal("fechaCreacion")))
                    fechaCreacion = Convert.ToDateTime(reader["fechaCreacion"]);
                if (!reader.IsDBNull(reader.GetOrdinal("fechaModificacion")))
                    fechaModificacion = Convert.ToDateTime(reader["fechaModificacion"]);
                if (!reader.IsDBNull(reader.GetOrdinal("idUsuario")))
                    idUsuario = (System.Int32)reader["idUsuario"];
                if (!reader.IsDBNull(reader.GetOrdinal("idUsuarioModificacion")))
                    idUsuarioModificacion = (System.Int32)reader["idUsuarioModificacion"];
                if (!reader.IsDBNull(reader.GetOrdinal("nombre")))
                    nombre = (System.String)reader["nombre"];
                if (!reader.IsDBNull(reader.GetOrdinal("idAnuncio")))
                    idAnuncio = (System.Int32)reader["idAnuncio"];
                if (!reader.IsDBNull(reader.GetOrdinal("idCliente")))
                    idCliente = (System.Int32)reader["idCliente"];
                if (!reader.IsDBNull(reader.GetOrdinal("fechaVencimiento")))
                    fechaVencimiento = Convert.ToDateTime(reader["fechaVencimiento"]);
                if (!reader.IsDBNull(reader.GetOrdinal("NoImpresiones")))
                    NoImpresiones = (System.Int32)reader["NoImpresiones"];
                if (!reader.IsDBNull(reader.GetOrdinal("idImagen")))
                    idImagen = (System.Int32)reader["idImagen"];
                if (!reader.IsDBNull(reader.GetOrdinal("descripcion")))
                    descripcion = (System.String)reader["descripcion"];
                if (!reader.IsDBNull(reader.GetOrdinal("texto")))
                    texto = (System.String)reader["texto"];
                if (!reader.IsDBNull(reader.GetOrdinal("fechaActivacion")))
                    fechaActivacion = Convert.ToDateTime(reader["fechaActivacion"]);
            }
        }


        private void GetRecord(DataRow dataRow)
        {
            if (dataRow != null)
            {
                if (dataRow["id"] != null)
                    id = (System.Int32)dataRow["id"];
                if (dataRow["fechaCreacion"] != null)
                    fechaCreacion = (System.DateTime)dataRow["fechaCreacion"];
                if (dataRow["fechaModificacion"] != null)
                    fechaModificacion = (System.DateTime)dataRow["fechaModificacion"];
                if (dataRow["idUsuario"] != null)
                    idUsuario = (System.Int32)dataRow["idUsuario"];
                if (dataRow["idUsuarioModificacion"] != null)
                    idUsuarioModificacion = (System.Int32)dataRow["idUsuarioModificacion"];
                if (dataRow["nombre"] != null)
                    nombre = (System.String)dataRow["nombre"];
                if (dataRow["idAnuncio"] != null)
                    idAnuncio = (System.Int32)dataRow["idAnuncio"];
                if (dataRow["idCliente"] != null)
                    idCliente = (System.Int32)dataRow["idCliente"];
                if (dataRow["fechaVencimiento"] != null)
                    fechaVencimiento = (System.DateTime)dataRow["fechaVencimiento"];
                if (dataRow["NoImpresiones"] != null)
                    NoImpresiones = (System.Int32)dataRow["NoImpresiones"];
                if (dataRow["idImagen"] != null)
                    idImagen = (System.Int32)dataRow["idImagen"];
                if (dataRow["descripcion"] != null)
                    descripcion = (System.String)dataRow["descripcion"];
                if (dataRow["texto"] != null)
                    texto = (System.String)dataRow["texto"];
                if (dataRow["fechaActivacion"] != null)
                    fechaActivacion = (System.DateTime)dataRow["fechaActivacion"];
            }
        }


        protected override void UpdateBind()
        {
            StringBuilder strCommand = new StringBuilder();
            strCommand.Append("UPDATE CUPON set ");
            strCommand.Append("fechaModificacion='" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "'");
            strCommand.Append(",idUsuarioModificacion='" + idUsuarioModificacion.ToString() + "'");
            strCommand.Append(",nombre=\"" + WLMFunctions.comillas(nombre) + "\"");
            strCommand.Append(",idAnuncio='" + idAnuncio.ToString() + "'");
            strCommand.Append(",idCliente='" + idCliente.ToString() + "'");
            strCommand.Append(",fechaVencimiento='" + fechaVencimiento.ToString("yyyy-MM-dd HH:mm:ss") + "'");
            strCommand.Append(",NoImpresiones='" + NoImpresiones.ToString() + "'");
            strCommand.Append(",idImagen='" + idImagen.ToString() + "'");
            strCommand.Append(",descripcion=\"" + WLMFunctions.comillas(descripcion) + "\"");
            strCommand.Append(",texto=\"" + WLMFunctions.comillas(texto) + "\"");
            strCommand.Append(",fechaActivacion='" + fechaActivacion.ToString("yyyy-MM-dd HH:mm:ss") + "'");
            strCommand.Append(" WHERE id='" + id + "'");
            ConexionDBInterna.ExecuteCommand(strCommand.ToString());
        }
        #endregion
    }


    [XmlType("Cupones")]
    public class CuponCollection
    {
        private List<Cupon> _items;
        [XmlElement("Cupon")]
        public List<Cupon> Elementos {get;set; }
        public CuponCollection()
        {
        }
        public CuponCollection(ref dbConnector ConexionDB)
        {

            string strCommand = "SELECT id FROM CUPON ";
            OdbcDataReader dataReader = ConexionDB.ExecuteReader(strCommand);
            Elementos = new List<Cupon>();
            while (dataReader.Read())
            {
                Cupon newItem = new Cupon(Convert.ToInt32(dataReader["id"]),ref ConexionDB);
                Elementos.Add(newItem);
            }
            dataReader.Close();
            dataReader.Dispose();
        }

        public CuponCollection(Anuncio anuncio, ref dbConnector ConexionDB)
        {

            string strCommand = "SELECT id FROM CUPON WHERE idAnuncio='"+anuncio.id+"' ORDER BY fechaVencimiento DESC";
            OdbcDataReader dataReader = ConexionDB.ExecuteReader(strCommand);
            
            Elementos = new List<Cupon>();
            while (dataReader.Read())
            {
                Cupon newItem = new Cupon(Convert.ToInt32(dataReader["id"]), ref ConexionDB);
                Elementos.Add(newItem);
            }
            dataReader.Close();
            dataReader.Dispose();
        }

        public CuponCollection(Cliente cliente, ref dbConnector ConexionDB)
        {

            string strCommand = "SELECT id FROM CUPON WHERE idCliente='" + cliente.id + "'";
            OdbcDataReader dataReader = ConexionDB.ExecuteReader(strCommand);
            Elementos = new List<Cupon>();
            while (dataReader.Read())
            {
                Cupon newItem = new Cupon(Convert.ToInt32(dataReader["id"]), ref ConexionDB);
                Elementos.Add(newItem);
            }
            dataReader.Close();
            dataReader.Dispose();
        }
    }
}